from rest_framework import serializers
from django_redis import get_redis_connection
from redis.exceptions import RedisError
import logging

logger = logging.getLogger('meiduo')

class RegisterSMSCodeSerializer(serializers.Serializer):

    text = serializers.CharField(label='验证码',max_length=4,min_length=4)
    image_code_id = serializers.UUIDField(label='uuid')



    def validate(self, attrs):

        text = attrs['text']
        image_code_id = attrs['image_code_id']

        redis_conn = get_redis_connection('code')

        redis_text = redis_conn.get('img_%s'%image_code_id)

        if redis_text is None:
            raise serializers.ValidationError('验证码已过期')

        try:
            redis_conn.delete('img_%s'%image_code_id)

        except RedisError as e:
            logger.error(e)

        if redis_text.decode().lower() != text:
            raise serializers.ValidationError('验证码不正确')

        return attrs




